home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- *
- * NSSDC/CDF CDF 'get' operations.
- *
- * Version 1.0, 29-Feb-92, ST Systems (STX)
- *
- * Modification history:
- *
- * V1.0 29-Feb-92, J Love Original version (was part of `cdflib.c').
- *
- ******************************************************************************/
-
- #include "cdflib.h"
-
- /******************************************************************************
- * CDFget.
- ******************************************************************************/
-
- CDFstatus CDFget (ap, item, fnc)
- va_list *ap;
- long item;
- long *fnc;
- {
- CDFstatus Pstatus = CDF_OK;
- CDFstatus Tstatus;
-
- switch (item) {
- case CDF_NUMDIMS_: {
- long *numDims;
- numDims = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *numDims = _CURcdf->GDR.NumDims;
- break;
- }
- case CDF_DIMSIZES_: {
- long *dimsize;
- long i;
- dimsize = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- for (i = 0; i < _CURcdf->GDR.NumDims; i++)
- dimsize[i] = _CURcdf->GDR.DimSizes[i];
- break;
- }
- case CDF_ENCODING_: {
- long *encoding;
- encoding = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *encoding = _CURcdf->CDR.Encoding;
- break;
- }
- case CDF_MAJORITY_: {
- long *majority;
- majority = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (bitset(_CURcdf->CDR.Flags,CDF_MAJORITY_BIT))
- *majority = ROW_MAJOR;
- else
- *majority = COL_MAJOR;
- break;
- }
- case CDF_FORMAT_: {
- long *format;
- format = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (bitset(_CURcdf->CDR.Flags,CDF_FORMAT_BIT))
- *format = SINGLE_FILE;
- else
- *format = MULTI_FILE;
- break;
- }
- case CDF_COPYRIGHT_: {
- char *copyRight;
- copyRight = va_arg (*ap, char *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- strcpy (copyRight, _CURcdf->CDR.copyright);
- break;
- }
- case LIB_COPYRIGHT_: {
- char *copyRight;
- copyRight = va_arg (*ap, char *);
- strcpy (copyRight, _CDF_CopyRight);
- break;
- }
- case CDF_NUMVARS_: {
- long *numvars;
- numvars = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *numvars = _CURcdf->GDR.NumVar;
- break;
- }
- case CDF_NUMATTRS_: {
- long *numattr;
- numattr = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *numattr = _CURcdf->GDR.NumAttr;
- break;
- }
- case CDF_MAXREC_: {
- long *maxRec;
- maxRec = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *maxRec = _CURcdf->GDR.MaxRec;
- break;
- }
- case CDF_VERSION_: {
- long *version;
- version = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *version = _CURcdf->CDR.Version;
- break;
- }
- case CDF_RELEASE_: {
- long *release;
- release = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *release = _CURcdf->CDR.Release;
- break;
- }
- case CDF_INCREMENT_: {
- long *increment;
- increment = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- *increment = _CURcdf->CDR.Increment;
- break;
- }
- case LIB_VERSION_: {
- long *version;
- version = va_arg (*ap, long *);
- *version = CDF_LIBRARY_VERSION;
- break;
- }
- case LIB_RELEASE_: {
- long *release;
- release = va_arg (*ap, long *);
- *release = CDF_LIBRARY_RELEASE;
- break;
- }
- case LIB_INCREMENT_: {
- long *increment;
- increment = va_arg (*ap, long *);
- *increment = CDF_LIBRARY_INCREMENT;
- break;
- }
- case LIB_subINCREMENT_: {
- char *subincrement;
- subincrement = va_arg (*ap, char *);
- *subincrement = CDF_LIBRARY_subINCREMENT;
- break;
- }
- case VAR_NAME_: {
- char *name;
- name = va_arg (*ap, char *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- strcpy (name, _CURcdf->CURvar->VDR.Name);
- break;
- }
- case VAR_DATATYPE_: {
- long *datatype;
- datatype = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- *datatype = _CURcdf->CURvar->VDR.DataType;
- break;
- }
- case VAR_NUMELEMS_: {
- long *numElements;
- numElements = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- *numElements = _CURcdf->CURvar->VDR.NumElem;
- break;
- }
- case VAR_RECVARY_: {
- long *recvary;
- recvary = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- if (bitset(_CURcdf->CURvar->VDR.Flags,VAR_RECVARY_BIT))
- *recvary = VARY;
- else
- *recvary = NOVARY;
- break;
- }
- case VAR_DIMVARYS_: {
- long *dimVarys;
- long i;
- dimVarys = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- for (i = 0; i < _CURcdf->GDR.NumDims; i++)
- dimVarys[i] = _CURcdf->CURvar->VDR.DimVarys[i];
- break;
- }
- case VAR_MAXREC_: {
- long *varMaxRec;
- varMaxRec = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- *varMaxRec = _CURcdf->CURvar->VDR.MaxRec;
- break;
- }
- case VAR_NUMBER_: {
- char *name;
- long *varnum;
- struct varSTRUCT *Var;
-
- name = va_arg (*ap, char *); /* no truncation of name if too long */
- varnum = va_arg (*ap, long *);
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
-
- Var = _CURcdf->varHead;
- while (Var != NULL) {
- if (strcmpITB(Var->VDR.Name,name) == 0) break;
- Var = Var->varNext;
- }
-
- if (Var == NULL)
- return NO_SUCH_VAR;
- else
- *varnum = Var->VDR.Num;
-
- break;
- }
- case VAR_DATA_: {
- long indicesOffset; /* offset (bytes) into record */
- long recOffset; /* offset (bytes) to start of record */
- long offset; /* offset (bytes) to value */
- long phyRecNum, i;
- long N;
- char *value;
- struct varSTRUCT *Var;
-
- value = va_arg (*ap, char *);
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
-
- Var = _CURcdf->CURvar;
-
- if (Var->status == VAR_CLOSED) {
- Tstatus = OpenVar (_CURcdf, Var);
- STATUSdisp (Tstatus, Pstatus);
- }
-
- Var->accessed_at = _CDFpseudo_clock++;
-
- #if FULL_ERROR_CHECKING
- if (_CURcdf->GDR.MaxRec < 0) return NO_RECORDS_EXIST;
- if (_CURcdf->recnum > _CURcdf->GDR.MaxRec) return BAD_REC_NUM;
- #endif
-
- /* Compute physical record number */
-
- if (bitclr(Var->VDR.Flags,VAR_RECVARY_BIT))
- phyRecNum = 0;
- else
- phyRecNum = _CURcdf->recnum;
-
- if (phyRecNum > Var->VDR.MaxRec) {
- if (bitset(Var->VDR.Flags,VAR_FILLVALUE_BIT))
- memmove (value, Var->VDR.FillValue, Var->NvalueBytes);
- else {
- /*** (NumElem will be 1 except for CDF_(U)CHAR) ***/
- for (i = 0; i < Var->VDR.NumElem; i++)
- memmove (value + i*_CDFelemSizes[Var->VDR.DataType],
- _CDFdefaultFillValues[Var->VDR.DataType],
- _CDFelemSizes[Var->VDR.DataType]);
- }
- STATUSdisp (VIRTUAL_RECORD_DATA, Pstatus);
- }
- else {
- if (bitclr(_CURcdf->CDR.Flags,CDF_FORMAT_BIT))
- recOffset = phyRecNum * Var->NphyRecBytes;
- else
- SINGLErecOffsetB (Var, phyRecNum, recOffset);
-
- INDICESoffsetB (_CURcdf->GDR.NumDims, Var, _CURcdf->indices,
- indicesOffset);
- offset = recOffset + indicesOffset;
-
- Seek (Var->fp, offset, SEEK_SET);
- N = getbytes (Var->NvalueBytes, value, Var->fp);
- if (N != Var->NvalueBytes) return VAR_READ_ERROR;
-
- DecodeBuffer (_CURcdf->CDR.Encoding,
- Var->VDR.DataType,
- Var->VDR.NumElem, value);
- }
- break;
- }
- case VAR_HYPERDATA_: {
- long i;
- char *buffer;
- struct varSTRUCT *Var;
- long Nvalues, Nbytes;
-
- buffer = va_arg (*ap, char *);
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
-
- Var = _CURcdf->CURvar;
-
- if (Var->status == VAR_CLOSED) {
- Tstatus = OpenVar (_CURcdf, Var);
- STATUSdisp (Tstatus, Pstatus);
- }
-
- Var->accessed_at = _CDFpseudo_clock++;
-
- #if FULL_ERROR_CHECKING
- if (_CURcdf->recnum +
- ((_CURcdf->reccount - 1) *
- _CURcdf->recinterval) > _CURcdf->GDR.MaxRec) return BAD_REC_NUM;
-
- for (i = 0; i < _CURcdf->GDR.NumDims; i++)
- if (_CURcdf->indices[i] +
- ((_CURcdf->counts[i] - 1) *
- _CURcdf->intervals[i]) >= _CURcdf->GDR.DimSizes[i]) return
- BAD_DIM_INDEX;
-
- #if defined(__MSDOS__)
- Nvalues = _CURcdf->reccount;
- for (i = 0; i < _CURcdf->GDR.NumDims; i++) Nvalues *= _CURcdf->counts[i];
- Nbytes = Nvalues * Var->VDR.NumElem * _CDFelemSizes[Var->VDR.DataType];
- if (Nbytes > (long) 65535) return IBM_PC_OVERFLOW;
- #endif
- #endif
-
- if (bitset(_CURcdf->CDR.Flags,CDF_MAJORITY_BIT))
- Tstatus = HyperAccess (Var, buffer, TRUE, TRUE);
- else
- Tstatus = HyperAccess (Var, buffer, FALSE, TRUE);
- STATUSdisp (Tstatus, Pstatus);
-
- break;
- }
- case VAR_SEQDATA_: {
- struct varSTRUCT *Var;
- void *value;
- long N;
- long recOffset;
- long offset;
- long recN; /* record number value is in */
-
- value = va_arg (*ap, char *);
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
-
- Var = _CURcdf->CURvar;
-
- if (Var->status == VAR_CLOSED) {
- Tstatus = OpenVar (_CURcdf, Var);
- STATUSdisp (Tstatus, Pstatus);
- }
-
- Var->accessed_at = _CDFpseudo_clock++;
-
- recN = Var->seqValueOffset / Var->NphyRecValues;
- if (recN > Var->VDR.MaxRec)
- return END_OF_VAR;
- else {
- if (bitclr(_CURcdf->CDR.Flags,CDF_FORMAT_BIT))
- offset = Var->seqValueOffset * Var->NvalueBytes;
- else {
- SINGLErecOffsetB (Var, recN, recOffset);
- offset = recOffset + (Var->seqValueOffset % Var->NphyRecValues) *
- Var->NvalueBytes;
- }
-
- Seek (Var->fp, offset, SEEK_SET);
-
- N = getbytes (Var->NvalueBytes, value, Var->fp);
- if (N != Var->NvalueBytes) return VAR_READ_ERROR;
-
- DecodeBuffer (_CURcdf->CDR.Encoding, Var->VDR.DataType,
- Var->VDR.NumElem, value);
-
- Var->seqValueOffset++; /* increment to next value */
- }
-
- break;
- }
- case VAR_FILLVALUE_: {
- void *fillValue;
- fillValue = va_arg (*ap, void *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- if (bitclr(_CURcdf->CURvar->VDR.Flags,VAR_FILLVALUE_BIT)) {
- STATUSdisp (NO_FILLVALUE_SPECIFIED, Pstatus);
- }
- else
- memmove (fillValue, _CURcdf->CURvar->VDR.FillValue,
- _CURcdf->CURvar->NvalueBytes);
- break;
- }
- case VAR_EXTENDRECS_: {
- long *NextendRecs;
- NextendRecs = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURvar == NULL) return NO_VAR_SELECTED;
- *NextendRecs = _CURcdf->CURvar->VDR.NextendRecs;
- break;
- }
- case ATTR_SCOPE_: {
- long *scope;
- scope = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- *scope = _CURcdf->CURattr->ADR.Scope;
- break;
- }
- case ATTR_NAME_: {
- char *attrname;
- attrname = va_arg (*ap, char *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- strcpy (attrname, _CURcdf->CURattr->ADR.Name);
- break;
- }
- case ATTR_NUMBER_: {
- char *name;
- long *attrnum;
- struct attrSTRUCT *Attr;
-
- name = va_arg (*ap, char *); /* no truncation of name if too long */
- attrnum = va_arg (*ap, long *);
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
-
- Attr = _CURcdf->attrHead;
- while (Attr != NULL) {
- if (strcmpITB(name,Attr->ADR.Name) == 0) break;
- Attr = Attr->attrNext;
- }
-
- if (Attr == NULL)
- return NO_SUCH_ATTR;
- else
- *attrnum = Attr->ADR.Num;
-
- break;
- }
- case ATTR_MAXENTRY_: {
- long *maxEntry;
- maxEntry = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- *maxEntry = _CURcdf->CURattr->ADR.MaxEntry;
- break;
- }
- case ATTR_NUMENTRIES_: {
- long *numEntries;
- numEntries = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- *numEntries = _CURcdf->CURattr->ADR.NumEntries;
- break;
- }
- case ENTRY_DATATYPE_: {
- long *datatype;
- datatype = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURentryNum == RESERVED_ENTRYNUM) return NO_ENTRY_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- if (_CURcdf->CURentry == NULL) return NO_SUCH_ENTRY;
- *datatype = _CURcdf->CURentry->AEDR.DataType;
- break;
- }
- case ENTRY_NUMELEMS_: {
- long *numelem;
- numelem = va_arg (*ap, long *);
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURentryNum == RESERVED_ENTRYNUM) return NO_ENTRY_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- if (_CURcdf->CURentry == NULL) return NO_SUCH_ENTRY;
- *numelem = _CURcdf->CURentry->AEDR.NumElem;
- break;
- }
- case ENTRY_DATA_: {
- void *value;
- long numbytes;
- value = va_arg (*ap, void *);
-
- if (_CURcdf == NULL) return NO_CDF_SELECTED;
- if (_CURcdf->CURentryNum == RESERVED_ENTRYNUM) return NO_ENTRY_SELECTED;
- if (_CURcdf->CURattr == NULL) return NO_ATTR_SELECTED;
- if (_CURcdf->CURentry == NULL) return NO_SUCH_ENTRY;
-
- numbytes = _CURcdf->CURentry->AEDR.NumElem *
- _CDFelemSizes[_CURcdf->CURentry->AEDR.DataType];
- memmove (value, _CURcdf->CURentry->AEDR.Value, numbytes);
-
- break;
- }
- case STATUS_TEXT_: {
- char *textPtr;
- textPtr = va_arg (*ap, char *);
-
- #if INCLUDE_STATUS_TEXT
- switch (_CURstatus) {
- case VIRTUAL_RECORD_DATA:
- strcpy (textPtr, "VIRTUAL_RECORD_DATA: One or more \
- of the records are virtual (never written to the CDF).");
- break;
-
- case READ_ONLY_ACCESS:
- strcpy (textPtr, "READ_ONLY_ACCESS: Read-only \
- access is allowed on the CDF (no writing or deleting).");
- break;
-
- case VERSION_1_CDF:
- strcpy (textPtr, "VERSION_1_CDF: This is a Version \
- 1 CDF - some restrictions may apply.");
- break;
-
- case CDF_OK:
- strcpy (textPtr, "CDF_OK: Function completed \
- successfully.");
- break;
-
- case ATTR_NAME_TRUNC:
- strcpy (textPtr, "ATTR_NAME_TRUNC: Attribute name \
- truncated to maximum allowed number of characters.");
- break;
-
- case CDF_NAME_TRUNC:
- strcpy (textPtr, "CDF_NAME_TRUNC: CDF path name \
- truncated to maximum allowed number of characters.");
- break;
-
- case VAR_NAME_TRUNC:
- strcpy (textPtr, "VAR_NAME_TRUNC: Variable name \
- truncated to maximum allowed number of characters.");
- break;
-
- case CDF_INCOMPATIBLE:
- strcpy (textPtr, "CDF_INCOMPATIBLE: Certain \
- operations on Version 2 CDFs are incompatible with the OBSOLETE interface.");
- break;
-
- case VAR_ALREADY_CLOSED:
- strcpy (textPtr, "VAR_ALREADY_CLOSED: The specified \
- variable is already closed.");
- break;
-
- case SINGLE_FILE_FORMAT:
- strcpy (textPtr, "SINGLE_FILE_FORMAT: The specified \
- operation is not applicable to CDFs with the SINGLE file format.");
- break;
-
- case NO_FILLVALUE_SPECIFIED:
- strcpy (textPtr, "NO_FILLVALUE_SPECIFIED: A fill \
- value has not yet been specified.");
- break;
-
- case NO_VARS_IN_CDF:
- strcpy (textPtr, "NO_VARS_IN_CDF: This CDF contains \
- no variables.");
- break;
-
- case ATTR_EXISTS:
- strcpy (textPtr, "ATTR_EXISTS: Named attribute \
- already exists - cannot create it.");
- break;
-
- case BAD_CDF_ID:
- strcpy (textPtr, "BAD_CDF_ID: CDF identifier is \
- unknown or invalid.");
- break;
-
- case BAD_DATA_TYPE:
- strcpy (textPtr, "BAD_DATA_TYPE: Unknown data type \
- specified.");
- break;
-
- case BAD_DIM_SIZE:
- strcpy (textPtr, "BAD_DIM_SIZE: One or more \
- dimension size specified as zero or less.");
- break;
-
- case BAD_DIM_INDEX:
- strcpy (textPtr, "BAD_DIM_INDEX: One or more \
- dimension index is out of range.");
- break;
-
- case BAD_ENCODING:
- strcpy (textPtr, "BAD_ENCODING: Unknown or \
- unsupported data encoding.");
- break;
-
- case BAD_MAJORITY:
- strcpy (textPtr, "BAD_MAJORITY: Unknown majority \
- specified.");
- break;
-
- case BAD_NUM_DIMS:
- strcpy (textPtr, "BAD_NUM_DIMS: The number of \
- dimensions specified is out of the allowed range.");
- break;
-
- case BAD_REC_NUM:
- strcpy (textPtr, "BAD_REC_NUM: Record number is \
- out of range.");
- break;
-
- case BAD_SCOPE:
- strcpy (textPtr, "BAD_SCOPE: Unrecognized scope for \
- attribute creation.");
- break;
-
- case BAD_NUM_ELEMS:
- strcpy (textPtr, "BAD_NUM_ELEMS: The number of \
- elements of the data type is illegal.");
- break;
-
- case CDF_CREATE_ERROR:
- strcpy (textPtr, "CDF_CREATE_ERROR: Cannot create \
- CDF specified - error from file system.");
- break;
-
- case CDF_OPEN_ERROR:
- strcpy (textPtr, "CDF_OPEN_ERROR: Cannot open \
- CDF specified - error from file system.");
- break;
-
- case CDF_EXISTS:
- strcpy (textPtr, "CDF_EXISTS: The CDF named already \
- exists - cannot create it.");
- break;
-
- case BAD_FORMAT:
- strcpy (textPtr, "BAD_FORMAT: Unknown CDF format \
- specified.");
- break;
-
- case VAX_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "VAX_ENCODING_UNSUPPORTED: VAX \
- encoding is not supported on the host machine.");
- break;
-
- case SUN_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "SUN_ENCODING_UNSUPPORTED: Sun \
- encoding is not supported on the host machine.");
- break;
-
- case NO_SUCH_ATTR:
- strcpy (textPtr, "NO_SUCH_ATTR: Attribute not found \
- in this CDF.");
- break;
-
- case NO_SUCH_CDF:
- strcpy (textPtr, "NO_SUCH_CDF: The specified CDF does not exist.");
- break;
-
- case NO_SUCH_ENTRY:
- strcpy (textPtr, "NO_SUCH_ENTRY: No such entry for \
- specified attribute.");
- break;
-
- case NO_SUCH_VAR:
- strcpy (textPtr, "NO_SUCH_VAR: Variable not found \
- in this CDF.");
- break;
-
- case VAR_READ_ERROR:
- strcpy (textPtr, "VAR_READ_ERROR: Failed to read \
- variable as requested (file read error).");
- break;
-
- case VAR_WRITE_ERROR:
- strcpy (textPtr, "VAR_WRITE_ERROR: Failed to write \
- variable as requested (file write error).");
- break;
-
- case TOO_MANY_CDFS:
- strcpy (textPtr, "TOO_MANY_CDFS: A limited number \
- of CDFs may be opened at once.");
- break;
-
- case TOO_MANY_VARS:
- strcpy (textPtr, "TOO_MANY_VARS: A CDF may contain \
- only a limited number of variables.");
- break;
-
- case VAR_EXISTS:
- strcpy (textPtr, "VAR_EXISTS: Named variable \
- already exists - cannot create it.");
- break;
-
- case BAD_MALLOC:
- strcpy (textPtr, "BAD_MALLOC: Unable to allocate \
- dynamic memory - system limit reached.");
- break;
-
- case NOT_A_CDF:
- strcpy (textPtr, "NOT_A_CDF: Named CDF is corrupted \
- or not actually a CDF.");
- break;
-
- case CORRUPTED_V2_CDF:
- strcpy (textPtr, "CORRUPTED_V2_CDF: This version 2 \
- CDF is corrupted.");
- break;
-
- case VAR_OPEN_ERROR:
- strcpy (textPtr, "VAR_OPEN_ERROR: An error occurred \
- while opening variable file.");
- break;
-
- case BAD_INITIAL_RECS:
- strcpy (textPtr, "BAD_INITIAL_RECS: An illegal \
- number of records to initially write has been specified.");
- break;
-
- case BAD_EXTEND_RECS:
- strcpy (textPtr, "BAD_EXTEND_RECS: An illegal \
- number of extend records has been specified.");
- break;
-
- case END_OF_VAR:
- strcpy (textPtr, "END_OF_VAR: The value offset (for \
- sequential access) is at the end of the variable.");
- break;
-
- case MIPSEB_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "MIPSEB_ENCODING_UNSUPPORTED: \
- MIPSEB encoding is not supported on the host machine.");
- break;
-
- case BAD_CDFSTATUS:
- strcpy (textPtr, "BAD_CDFSTATUS: Unknown CDFstatus \
- value received.");
- break;
-
- case NO_WRITE_ACCESS:
- strcpy (textPtr, "NO_WRITE_ACCESS: Writing is not \
- allowed (read-only access).");
- break;
-
- case NO_DELETE_ACCESS:
- strcpy (textPtr, "NO_DELETE_ACCESS: Deleting is not \
- allowed (read-only access).");
- break;
-
- case BAD_REC_COUNT:
- strcpy (textPtr, "BAD_REC_COUNT: Illegal record \
- count specified.");
- break;
-
- case BAD_REC_INTERVAL:
- strcpy (textPtr, "BAD_REC_INTERVAL: Illegal record \
- interval specified.");
- break;
-
- case BAD_DIM_COUNT:
- strcpy (textPtr, "BAD_DIM_COUNT: Illegal dimension \
- count specified.");
- break;
-
- case BAD_DIM_INTERVAL:
- strcpy (textPtr, "BAD_DIM_INTERVAL: Illegal \
- dimension interval specified.");
- break;
-
- case BAD_VAR_NUM:
- strcpy (textPtr, "BAD_VAR_NUM: Illegal variable \
- number specified.");
- break;
-
- case BAD_ATTR_NUM:
- strcpy (textPtr, "BAD_ATTR_NUM: Illegal attribute \
- number specified.");
- break;
-
- case BAD_ENTRY_NUM:
- strcpy (textPtr, "BAD_ENTRY_NUM: Illegal attribute \
- entry number specified.");
- break;
-
- case BAD_ATTR_NAME:
- strcpy (textPtr, "BAD_ATTR_NAME: Illegal attribute \
- name specified.");
- break;
-
- case BAD_VAR_NAME:
- strcpy (textPtr, "BAD_VAR_NAME: Illegal variable \
- name specified.");
- break;
-
- case NO_ATTR_SELECTED:
- strcpy (textPtr, "NO_ATTR_SELECTED: An attribute \
- has not yet been selected.");
- break;
-
- case NO_ENTRY_SELECTED:
- strcpy (textPtr, "NO_ENTRY_SELECTED: An attribute \
- entry has not yet been selected.");
- break;
-
- case NO_VAR_SELECTED:
- strcpy (textPtr, "NO_VAR_SELECTED: A variable has \
- not yet been selected.");
- break;
-
- case BAD_CDF_NAME:
- strcpy (textPtr, "BAD_CDF_NAME: Illegal CDF name \
- specified.");
- break;
-
- case MIPSEL_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "MIPSEL_ENCODING_UNSUPPORTED: \
- MIPSEL encoding is not supported on the host machine.");
- break;
-
- case CANNOT_CHANGE:
- strcpy (textPtr, "CANNOT_CHANGE: Because of \
- dependencies on the value, it cannot be changed.");
- break;
-
- case NO_STATUS_SELECTED:
- strcpy (textPtr, "NO_STATUS_SELECTED: A CDF status \
- code has not yet been selected.");
- break;
-
- case NO_CDF_SELECTED:
- strcpy (textPtr, "NO_CDF_SELECTED: A CDF \
- has not yet been selected.");
- break;
-
- case NO_RECORDS_EXIST:
- strcpy (textPtr, "NO_RECORDS_EXIST: No records \
- exist in the CDF.");
- break;
-
- case CDF_CLOSE_ERROR:
- strcpy (textPtr, "CDF_CLOSE_ERROR: Error detected \
- while trying to close CDF.");
- break;
-
- case VAR_CLOSE_ERROR:
- strcpy (textPtr, "VAR_CLOSE_ERROR: Error detected \
- while trying to close variable file.");
- break;
-
- case BAD_FNC_OR_ITEM:
- strcpy (textPtr, "BAD_FNC_OR_ITEM: The specified \
- function or item is illegal.");
- break;
-
- case CORRUPTED_V1_CDF:
- strcpy (textPtr, "CORRUPTED_V1_CDF: This Version 1 \
- CDF is corrupted.");
- break;
-
- case ILLEGAL_ON_V1_CDF:
- strcpy (textPtr, "ILLEGAL_ON_V1_CDF: The specified \
- operation is not allowed on Version 1 CDFs.");
- break;
-
- case CDH_OPEN_ERROR:
- strcpy (textPtr, "CDH_OPEN_ERROR: An error occurred \
- while opening the .CDH file (V1 CDF).");
- break;
-
- case CDH_CLOSE_ERROR:
- strcpy (textPtr, "CDH_CLOSE_ERROR: An error \
- occurred while closing the .CDH file (V1 CDF).");
- break;
-
- case V1_CDF_UNSUPPORTED:
- strcpy (textPtr, "V1_CDF_UNSUPPORTED: Version 1 \
- CDFs are not supported on the host machine.");
- break;
-
- case IBMPC_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "IBMPC_ENCODING_UNSUPPORTED: \
- IBMPC encoding is not supported on the host machine.");
- break;
-
- case IBM_PC_OVERFLOW:
- strcpy (textPtr, "IBM_PC_OVERFLOW: \
- An operation involving more than 64Kb of contiguous memory was attempted.");
- break;
-
- case IBMRS_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "IBMRS_ENCODING_UNSUPPORTED: \
- IBMRS encoding is not supported on the host machine.");
- break;
-
- case HP_ENCODING_UNSUPPORTED:
- strcpy (textPtr, "HP_ENCODING_UNSUPPORTED: \
- HP encoding is not supported on the host machine.");
- break;
-
- case VAR_CREATE_ERROR:
- strcpy (textPtr, "VAR_CREATE_ERROR: \
- An error occurred while creating a variable file (multi-file CDF).");
- break;
-
- default:
- strcpy (textPtr, "Text not found (unknown \
- CDFstatus).");
- return BAD_CDFSTATUS;
- }
- #else
- strcpy (textPtr, "Explanation text not available (%ld).", _CURstatus);
- #endif
- break;
- }
-
- default: {
- *fnc = item;
- break;
- }
- }
- return Pstatus;
- }
-